File Upload এবং File Download হল ওয়েব অ্যাপ্লিকেশনগুলির একটি সাধারণ ফিচার, যেখানে ব্যবহারকারীরা সার্ভারে ফাইল আপলোড বা ডাউনলোড করতে পারে। Java Servlets এর মাধ্যমে ফাইল আপলোড এবং ডাউনলোড করা সম্ভব। এখানে আমরা HttpServlet ব্যবহার করে একটি উদাহরণ দেখব, যেখানে সার্ভলেটের মাধ্যমে file upload এবং file download কার্যক্রম সম্পাদন করা হবে।
File Upload
File Upload হল একটি প্রক্রিয়া যেখানে ব্যবহারকারী একটি ফাইল নির্বাচন করে সার্ভারে পাঠায়। এই প্রক্রিয়ায়, ফাইলটি ওয়েব ফর্মের মাধ্যমে সার্ভারে পাঠানো হয় এবং সার্ভার তা গ্রহণ করে সংরক্ষণ করে।
১. File Upload Servlet উদাহরণ
নিচে একটি file upload servlet উদাহরণ দেওয়া হলো, যা একটি ফাইল গ্রহণ করে এবং সার্ভারে নির্দিষ্ট ফোল্ডারে সংরক্ষণ করে।
Step 1: Servlet (FileUploadServlet.java)
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;
import org.apache.commons.fileupload.FileItem;
public class FileUploadServlet extends HttpServlet {
// Process the HTTP POST request
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set content type to HTML
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// Check if the form data contains a file
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// Parse the request
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
// Process the uploaded file
if (!item.isFormField()) {
String fileName = item.getName();
String filePath = "uploads/" + fileName;
File uploadedFile = new File(filePath);
// Write the uploaded file to the disk
item.write(uploadedFile);
out.println("<h3>File uploaded successfully: " + fileName + "</h3>");
}
}
} catch (Exception e) {
out.println("<h3>Error uploading file: " + e.getMessage() + "</h3>");
}
} else {
out.println("<h3>The form is not multipart</h3>");
}
}
}
২. HTML Form for File Upload (upload.jsp)
এই HTML ফর্মের মাধ্যমে ব্যবহারকারী একটি ফাইল সার্ভারে আপলোড করতে পারবেন।
<!DOCTYPE html>
<html>
<head>
<title>File Upload</title>
</head>
<body>
<h2>Upload File</h2>
<form action="FileUploadServlet" method="post" enctype="multipart/form-data">
<label for="file">Choose file to upload:</label>
<input type="file" name="file" id="file" /><br><br>
<input type="submit" value="Upload File" />
</form>
</body>
</html>
৩. web.xml Configuration
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>FileUploadServlet</servlet-name>
<servlet-class>com.example.FileUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadServlet</servlet-name>
<url-pattern>/FileUploadServlet</url-pattern>
</servlet-mapping>
</web-app>
এখানে:
- Servlet কনফিগারেশন করা হয়েছে যা
/FileUploadServletURL প্যাটার্নে ফাইল আপলোড করতে সাহায্য করবে।
৪. File Upload Library
আপনার pom.xml ফাইলে Apache Commons FileUpload লাইব্রেরি যোগ করতে হবে যাতে ফাইল আপলোড সম্পর্কিত কাজ করতে পারে।
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
৫. File Upload Folder
আপনার প্রকল্পে একটি uploads/ ফোল্ডার তৈরি করুন যেখানে ফাইলগুলো সংরক্ষিত হবে।
File Download
File Download হল একটি প্রক্রিয়া যেখানে ব্যবহারকারী সার্ভার থেকে একটি ফাইল ডাউনলোড করতে পারে। এটি HttpServletResponse এর মাধ্যমে ফাইল পাঠানো হয়।
১. File Download Servlet উদাহরণ
এখানে একটি file download servlet উদাহরণ দেওয়া হলো, যা ব্যবহারকারীকে একটি ফাইল ডাউনলোড করতে সক্ষম করবে।
Step 1: Servlet (FileDownloadServlet.java)
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class FileDownloadServlet extends HttpServlet {
// Process the HTTP GET request
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set the content type to indicate a file download
String filePath = "uploads/sample.txt"; // Path to the file on the server
File file = new File(filePath);
if (file.exists()) {
// Set the response content type and header for downloading the file
response.setContentType("application/octet-stream");
response.setContentLength((int) file.length());
response.setHeader("Content-Disposition", "attachment; filename=\"" + file.getName() + "\"");
// Read the file and send it to the response output stream
try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.flush();
}
} else {
response.getWriter().println("File not found!");
}
}
}
২. web.xml Configuration for File Download Servlet
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>FileDownloadServlet</servlet-name>
<servlet-class>com.example.FileDownloadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileDownloadServlet</servlet-name>
<url-pattern>/download</url-pattern>
</servlet-mapping>
</web-app>
এখানে:
- Servlet কনফিগারেশন করা হয়েছে যা
/downloadURL প্যাটার্নে ফাইল ডাউনলোড করতে সাহায্য করবে।
৩. File Download Request (URL)
এখন ব্যবহারকারী /download URL থেকে ফাইল ডাউনলোড করতে পারবে। উদাহরণস্বরূপ:
http://localhost:8080/your-app/download
সারাংশ
File Upload এবং File Download ওয়েব অ্যাপ্লিকেশনগুলির গুরুত্বপূর্ণ ফিচার যা সার্ভলেটের মাধ্যমে সহজেই ইমপ্লিমেন্ট করা যায়। File Upload সার্ভলেট ফাইল গ্রহণ করে এবং সেগুলিকে সার্ভারে সংরক্ষণ করে, যখন File Download সার্ভলেট ব্যবহারকারীকে সার্ভার থেকে ফাইল ডাউনলোড করতে সহায়তা করে। সার্ভলেট API, বিশেষত HttpServletRequest এবং HttpServletResponse এর মাধ্যমে এই কার্যক্রমগুলি পরিচালনা করা হয়। Apache Commons FileUpload লাইব্রেরি ফাইল আপলোডের জন্য ব্যবহৃত হয় এবং সার্ভলেট ব্যবহারকারীদের জন্য একটি কার্যকরী ফাইল ট্রান্সফার ব্যবস্থা প্রদান করে।
Read more